<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AIfES 2: aimath_q31_default.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="AIfES_logo_small.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">AIfES 2
   &#160;<span id="projectnumber">2.0.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('aimath__q31__default_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">aimath_q31_default.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="aimath__q31__default_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#ifndef AIMATH_Q31_DEFAULT</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#define AIMATH_Q31_DEFAULT</span></div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160; </div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#define SHIFT_EQUALIZATION</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;math.h&gt;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="aimath__q31_8h.html">basic/base/aimath/aimath_q31.h</a>&quot;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160; </div>
<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a0b8e69c6c1bba4b937f95f211d035e11">  143</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a0b8e69c6c1bba4b937f95f211d035e11">aimath_q31_default_linear32</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *a, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *b, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *c, <a class="code" href="structaitensor.html">aitensor_t</a> *result); <span class="comment">//TODO Rename to aimath_q31_default_linear() (without 32) ?</span></div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160; </div>
<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a210ed501ad2308761defaf4c721d60a1">  181</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a210ed501ad2308761defaf4c721d60a1">aimath_q31_default_mat_mul</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *a, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *b, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160; </div>
<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a4a59d9f24166fe63acb51a959bfff102">  217</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a4a59d9f24166fe63acb51a959bfff102">aimath_q31_default_multiply</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *a, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *b, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160; </div>
<div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a07b0b5fde17397ed90e43c27673c83aa">  249</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a07b0b5fde17397ed90e43c27673c83aa">aimath_q31_default_scalar_mul</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *scalar, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *a, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160; </div>
<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#aaf4080020d251d878859d9a2ae27c53f">  289</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#aaf4080020d251d878859d9a2ae27c53f">aimath_q31_default_tensor_add_different_shift</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *a, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *b, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160; </div>
<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a7f943a7bdaed4630bb1e2a8418898dc1">  328</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a7f943a7bdaed4630bb1e2a8418898dc1">aimath_q31_default_tensor_add_same_shift</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *a, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *b, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160; </div>
<div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a0519d352e63c9eee09450bb434bf76cf">  368</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a0519d352e63c9eee09450bb434bf76cf">aimath_q31_default_tensor_sub_different_shift</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *a, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *b, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160; </div>
<div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#aa21f4253c5887e2c14138fe8ccd269a5">  407</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#aa21f4253c5887e2c14138fe8ccd269a5">aimath_q31_default_tensor_sub_same_shift</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *a, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *b, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160; </div>
<div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#ace86d3315e02380430b5ccb30c1654cd">  438</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#ace86d3315e02380430b5ccb30c1654cd">aimath_q31_default_copy_tensor</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *from, <a class="code" href="structaitensor.html">aitensor_t</a> *to);</div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160; </div>
<div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#aabfe1ffbe35e165f62f11a6b25096415">  462</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#aabfe1ffbe35e165f62f11a6b25096415">aimath_q31_default_transpose_vector</a>(<a class="code" href="structaitensor.html">aitensor_t</a> *vector);</div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160; </div>
<div class="line"><a name="l00488"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a1eee53561fd10925686daef72b5f5680">  488</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a1eee53561fd10925686daef72b5f5680">aimath_q31_default_norm_squared</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <span class="keywordtype">void</span> *result);</div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160; </div>
<div class="line"><a name="l00517"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#afbbdfc6c4787782533e79df8aab5c3ba">  517</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#afbbdfc6c4787782533e79df8aab5c3ba">aimath_q31_default_tensor_sqrt</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160; </div>
<div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a173b48fe6e4d1fb5dcb441954a05afe7">  563</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a173b48fe6e4d1fb5dcb441954a05afe7">aimath_q31_default_sigmoid</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160; </div>
<div class="line"><a name="l00596"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a23148227bece10be2f8b16b07df1c6cb">  596</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a23148227bece10be2f8b16b07df1c6cb">aimath_q31_default_d_sigmoid</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *sigmoid_x, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160; </div>
<div class="line"><a name="l00628"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#ae308be51fead200a1bd035e22dc2b9ba">  628</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#ae308be51fead200a1bd035e22dc2b9ba">aimath_q31_default_relu</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160; </div>
<div class="line"><a name="l00663"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#aeca69423ea281e6b616d1ef4784a21cf">  663</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#aeca69423ea281e6b616d1ef4784a21cf">aimath_q31_default_d_relu</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160; </div>
<div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a8639f9d5f5da2d7255e157902d07777b">  701</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a8639f9d5f5da2d7255e157902d07777b">aimath_q31_default_leaky_relu</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <span class="keyword">const</span> <span class="keywordtype">void</span> *alpha, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160; </div>
<div class="line"><a name="l00737"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a20f3c6582f1a05da2ca8821d6804d6d0">  737</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a20f3c6582f1a05da2ca8821d6804d6d0">aimath_q31_default_d_leaky_relu</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <span class="keyword">const</span> <span class="keywordtype">void</span> *alpha, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160; </div>
<div class="line"><a name="l00781"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#aeceeacc1c2046dfa41991a39712ab030">  781</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#aeceeacc1c2046dfa41991a39712ab030">aimath_q31_default_tanh</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160; </div>
<div class="line"><a name="l00814"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#ad2f48e32e7e525050c4df4602a5d5ba4">  814</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#ad2f48e32e7e525050c4df4602a5d5ba4">aimath_q31_default_d_tanh</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *tanh_x, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160; </div>
<div class="line"><a name="l00846"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#acc0a1bce305f17cc13ed7ae96e17288f">  846</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#acc0a1bce305f17cc13ed7ae96e17288f">aimath_q31_default_softsign</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160; </div>
<div class="line"><a name="l00878"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#ade419ce3010e7eb1309e01a2d9f6d53c">  878</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#ade419ce3010e7eb1309e01a2d9f6d53c">aimath_q31_default_d_softsign</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160; </div>
<div class="line"><a name="l00922"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#aa79d9561f6461efaf6bd01590d38ae98">  922</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#aa79d9561f6461efaf6bd01590d38ae98">aimath_q31_default_softmax</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160; </div>
<div class="line"><a name="l00973"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#ae56af0b1607688bbec4d1a0954e33ece">  973</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#ae56af0b1607688bbec4d1a0954e33ece">aimath_q31_default_elu</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <span class="keyword">const</span> <span class="keywordtype">void</span> *alpha, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160; </div>
<div class="line"><a name="l01008"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a9a0176a54b8885e46e3749d4a85e6e22"> 1008</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a9a0176a54b8885e46e3749d4a85e6e22">aimath_q31_default_d_elu</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, <span class="keyword">const</span> <span class="keywordtype">void</span> *alpha, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; </div>
<div class="line"><a name="l01033"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a363b2bdd94a1057adc55433ab68580a1"> 1033</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a363b2bdd94a1057adc55433ab68580a1">aimath_q31_default_zero_tensor</a>(<a class="code" href="structaitensor.html">aitensor_t</a> *tensor);</div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; </div>
<div class="line"><a name="l01057"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a68d535888ca0bc7155a80e53e3a56725"> 1057</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a68d535888ca0bc7155a80e53e3a56725">aimath_q31_default_init_zeros</a>(<a class="code" href="structaitensor.html">aitensor_t</a> *tensor);</div>
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; </div>
<div class="line"><a name="l01081"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#aefab1f6288cfad6d4d65b095d6c2283d"> 1081</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#aefab1f6288cfad6d4d65b095d6c2283d">aimath_q31_default_tensor_init_uniform</a>(<a class="code" href="structaitensor.html">aitensor_t</a> *tensor, <span class="keywordtype">float</span> from, <span class="keywordtype">float</span> to);</div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; </div>
<div class="line"><a name="l01113"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#acfffcef30d301ff065e45649e49f01f9"> 1113</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#acfffcef30d301ff065e45649e49f01f9">aimath_q31_default_init_glorot_uniform</a>(<a class="code" href="structaitensor.html">aitensor_t</a> *tensor);</div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; </div>
<div class="line"><a name="l01145"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a2136e9dca291d32750d09ada2e011b06"> 1145</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a2136e9dca291d32750d09ada2e011b06">aimath_q31_default_init_glorot_uniform_cdim</a>(<a class="code" href="structaitensor.html">aitensor_t</a> *tensor, int8_t cin_axis, int8_t cout_axis);</div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; </div>
<div class="line"><a name="l01177"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a9db8333bc23a9bb803958a76e0a759c3"> 1177</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a9db8333bc23a9bb803958a76e0a759c3">aimath_q31_default_init_he_uniform</a>(<a class="code" href="structaitensor.html">aitensor_t</a> *tensor);</div>
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; </div>
<div class="line"><a name="l01208"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#abfef1cdcd2d1c8824ec69a565375ee44"> 1208</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#abfef1cdcd2d1c8824ec69a565375ee44">aimath_q31_default_init_he_uniform_cdim</a>(<a class="code" href="structaitensor.html">aitensor_t</a> *tensor, int8_t cout_axis);</div>
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; </div>
<div class="line"><a name="l01216"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#ad24f7f3d3b8085e7b306dcfd25eedee5"> 1216</a></span>&#160;int64_t <a class="code" href="aimath__q31__default_8h.html#ad24f7f3d3b8085e7b306dcfd25eedee5">aimath_q31_default_sqrt</a>(int64_t x);</div>
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; </div>
<div class="line"><a name="l01229"></a><span class="lineno"><a class="line" href="aimath__q31__default_8h.html#a8ab2008f6346986684d2b5b7a95fc5e0"> 1229</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="aimath__q31__default_8h.html#a8ab2008f6346986684d2b5b7a95fc5e0">aimath_q31_default_sum_channelwise</a>(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *x, int8_t channel_axis, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; </div>
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;<span class="comment">// TODO: docs</span></div>
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;<span class="keywordtype">void</span> aimath_q31_default_mse_gradients_sum(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *predicted, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *target, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; </div>
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;<span class="keywordtype">void</span> aimath_q31_default_mse_gradients_mean(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *predicted, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *target, <a class="code" href="structaitensor.html">aitensor_t</a> *result);</div>
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; </div>
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;<span class="keywordtype">void</span> aimath_q31_default_mse_loss_sum(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *predicted, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *target, <span class="keywordtype">void</span> *result);</div>
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; </div>
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;<span class="keywordtype">void</span> aimath_q31_default_mse_loss_mean(<span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *predicted, <span class="keyword">const</span> <a class="code" href="structaitensor.html">aitensor_t</a> *target, <span class="keywordtype">void</span> *result);</div>
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// AIMATH_Q31_DEFAULT</span></div>
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; </div>
<div class="ttc" id="aaimath__q31_8h_html"><div class="ttname"><a href="aimath__q31_8h.html">aimath_q31.h</a></div><div class="ttdoc">Definition of the Q31 (aiq31) data-type.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a0519d352e63c9eee09450bb434bf76cf"><div class="ttname"><a href="aimath__q31__default_8h.html#a0519d352e63c9eee09450bb434bf76cf">aimath_q31_default_tensor_sub_different_shift</a></div><div class="ttdeci">void aimath_q31_default_tensor_sub_different_shift(const aitensor_t *a, const aitensor_t *b, aitensor_t *result)</div><div class="ttdoc">Performs an element wise subtraction of Q31  tensors a and b with different shifts.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a07b0b5fde17397ed90e43c27673c83aa"><div class="ttname"><a href="aimath__q31__default_8h.html#a07b0b5fde17397ed90e43c27673c83aa">aimath_q31_default_scalar_mul</a></div><div class="ttdeci">void aimath_q31_default_scalar_mul(const void *scalar, const aitensor_t *a, aitensor_t *result)</div><div class="ttdoc">Performs a scalar multiplication (scaling) of Q31  tensor a and a scalar.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a0b8e69c6c1bba4b937f95f211d035e11"><div class="ttname"><a href="aimath__q31__default_8h.html#a0b8e69c6c1bba4b937f95f211d035e11">aimath_q31_default_linear32</a></div><div class="ttdeci">void aimath_q31_default_linear32(const aitensor_t *a, const aitensor_t *b, const aitensor_t *c, aitensor_t *result)</div><div class="ttdoc">Performs a matrix multiplication of Q31  matrices a and b and adds a vector c to each row.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a173b48fe6e4d1fb5dcb441954a05afe7"><div class="ttname"><a href="aimath__q31__default_8h.html#a173b48fe6e4d1fb5dcb441954a05afe7">aimath_q31_default_sigmoid</a></div><div class="ttdeci">void aimath_q31_default_sigmoid(const aitensor_t *x, aitensor_t *result)</div><div class="ttdoc">Calculates the sigmoid of each element in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a1eee53561fd10925686daef72b5f5680"><div class="ttname"><a href="aimath__q31__default_8h.html#a1eee53561fd10925686daef72b5f5680">aimath_q31_default_norm_squared</a></div><div class="ttdeci">void aimath_q31_default_norm_squared(const aitensor_t *x, void *result)</div><div class="ttdoc">Calculates the squared sum of all elements in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a20f3c6582f1a05da2ca8821d6804d6d0"><div class="ttname"><a href="aimath__q31__default_8h.html#a20f3c6582f1a05da2ca8821d6804d6d0">aimath_q31_default_d_leaky_relu</a></div><div class="ttdeci">void aimath_q31_default_d_leaky_relu(const aitensor_t *x, const void *alpha, aitensor_t *result)</div><div class="ttdoc">Calculates the leaky rectifier (leaky-ReLU) derivative of each element in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a210ed501ad2308761defaf4c721d60a1"><div class="ttname"><a href="aimath__q31__default_8h.html#a210ed501ad2308761defaf4c721d60a1">aimath_q31_default_mat_mul</a></div><div class="ttdeci">void aimath_q31_default_mat_mul(const aitensor_t *a, const aitensor_t *b, aitensor_t *result)</div><div class="ttdoc">Performs a matrix multiplication of Q31  matrices a and b.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a2136e9dca291d32750d09ada2e011b06"><div class="ttname"><a href="aimath__q31__default_8h.html#a2136e9dca291d32750d09ada2e011b06">aimath_q31_default_init_glorot_uniform_cdim</a></div><div class="ttdeci">void aimath_q31_default_init_glorot_uniform_cdim(aitensor_t *tensor, int8_t cin_axis, int8_t cout_axis)</div><div class="ttdoc">Fills a Q31  tensor with random numbers uniformly within given range, according to Glorot et al.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a23148227bece10be2f8b16b07df1c6cb"><div class="ttname"><a href="aimath__q31__default_8h.html#a23148227bece10be2f8b16b07df1c6cb">aimath_q31_default_d_sigmoid</a></div><div class="ttdeci">void aimath_q31_default_d_sigmoid(const aitensor_t *sigmoid_x, aitensor_t *result)</div><div class="ttdoc">Calculates the derivative sigmoid of each element in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a363b2bdd94a1057adc55433ab68580a1"><div class="ttname"><a href="aimath__q31__default_8h.html#a363b2bdd94a1057adc55433ab68580a1">aimath_q31_default_zero_tensor</a></div><div class="ttdeci">void aimath_q31_default_zero_tensor(aitensor_t *tensor)</div><div class="ttdoc">Fills a Q31  tensor with zeros.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a4a59d9f24166fe63acb51a959bfff102"><div class="ttname"><a href="aimath__q31__default_8h.html#a4a59d9f24166fe63acb51a959bfff102">aimath_q31_default_multiply</a></div><div class="ttdeci">void aimath_q31_default_multiply(const aitensor_t *a, const aitensor_t *b, aitensor_t *result)</div><div class="ttdoc">Performs an element wise multiplication of Q31  tensors a and b (Hadamard product)</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a68d535888ca0bc7155a80e53e3a56725"><div class="ttname"><a href="aimath__q31__default_8h.html#a68d535888ca0bc7155a80e53e3a56725">aimath_q31_default_init_zeros</a></div><div class="ttdeci">void aimath_q31_default_init_zeros(aitensor_t *tensor)</div><div class="ttdoc">Fills a Q31  tensor with zeros.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a7f943a7bdaed4630bb1e2a8418898dc1"><div class="ttname"><a href="aimath__q31__default_8h.html#a7f943a7bdaed4630bb1e2a8418898dc1">aimath_q31_default_tensor_add_same_shift</a></div><div class="ttdeci">void aimath_q31_default_tensor_add_same_shift(const aitensor_t *a, const aitensor_t *b, aitensor_t *result)</div><div class="ttdoc">Performs an element wise addition of Q31  tensors a and b with same shifts.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a8639f9d5f5da2d7255e157902d07777b"><div class="ttname"><a href="aimath__q31__default_8h.html#a8639f9d5f5da2d7255e157902d07777b">aimath_q31_default_leaky_relu</a></div><div class="ttdeci">void aimath_q31_default_leaky_relu(const aitensor_t *x, const void *alpha, aitensor_t *result)</div><div class="ttdoc">Calculates the leaky rectifier (leaky ReLU) value of each element in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a8ab2008f6346986684d2b5b7a95fc5e0"><div class="ttname"><a href="aimath__q31__default_8h.html#a8ab2008f6346986684d2b5b7a95fc5e0">aimath_q31_default_sum_channelwise</a></div><div class="ttdeci">void aimath_q31_default_sum_channelwise(const aitensor_t *x, int8_t channel_axis, aitensor_t *result)</div><div class="ttdoc">Sums up all values of a channel of the Q31  tensor x.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a9a0176a54b8885e46e3749d4a85e6e22"><div class="ttname"><a href="aimath__q31__default_8h.html#a9a0176a54b8885e46e3749d4a85e6e22">aimath_q31_default_d_elu</a></div><div class="ttdeci">void aimath_q31_default_d_elu(const aitensor_t *x, const void *alpha, aitensor_t *result)</div><div class="ttdoc">Calculates the exponential rectifier (ELU) derivative of each element in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_a9db8333bc23a9bb803958a76e0a759c3"><div class="ttname"><a href="aimath__q31__default_8h.html#a9db8333bc23a9bb803958a76e0a759c3">aimath_q31_default_init_he_uniform</a></div><div class="ttdeci">void aimath_q31_default_init_he_uniform(aitensor_t *tensor)</div><div class="ttdoc">Fills a Q31  tensor with random numbers uniformly within given range, according to He et al.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_aa21f4253c5887e2c14138fe8ccd269a5"><div class="ttname"><a href="aimath__q31__default_8h.html#aa21f4253c5887e2c14138fe8ccd269a5">aimath_q31_default_tensor_sub_same_shift</a></div><div class="ttdeci">void aimath_q31_default_tensor_sub_same_shift(const aitensor_t *a, const aitensor_t *b, aitensor_t *result)</div><div class="ttdoc">Performs an element wise subtraction of Q31  tensors a and b with same shifts.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_aa79d9561f6461efaf6bd01590d38ae98"><div class="ttname"><a href="aimath__q31__default_8h.html#aa79d9561f6461efaf6bd01590d38ae98">aimath_q31_default_softmax</a></div><div class="ttdeci">void aimath_q31_default_softmax(const aitensor_t *x, aitensor_t *result)</div><div class="ttdoc">Calculates the softmax value of each batch element (row) of a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_aabfe1ffbe35e165f62f11a6b25096415"><div class="ttname"><a href="aimath__q31__default_8h.html#aabfe1ffbe35e165f62f11a6b25096415">aimath_q31_default_transpose_vector</a></div><div class="ttdeci">void aimath_q31_default_transpose_vector(aitensor_t *vector)</div><div class="ttdoc">Transposes a Q31  vector.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_aaf4080020d251d878859d9a2ae27c53f"><div class="ttname"><a href="aimath__q31__default_8h.html#aaf4080020d251d878859d9a2ae27c53f">aimath_q31_default_tensor_add_different_shift</a></div><div class="ttdeci">void aimath_q31_default_tensor_add_different_shift(const aitensor_t *a, const aitensor_t *b, aitensor_t *result)</div><div class="ttdoc">Performs an element wise addition of Q31  tensors a and b with different shifts.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_abfef1cdcd2d1c8824ec69a565375ee44"><div class="ttname"><a href="aimath__q31__default_8h.html#abfef1cdcd2d1c8824ec69a565375ee44">aimath_q31_default_init_he_uniform_cdim</a></div><div class="ttdeci">void aimath_q31_default_init_he_uniform_cdim(aitensor_t *tensor, int8_t cout_axis)</div><div class="ttdoc">Fills a Q31  tensor with random numbers uniformly within given range, according to He et al.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_acc0a1bce305f17cc13ed7ae96e17288f"><div class="ttname"><a href="aimath__q31__default_8h.html#acc0a1bce305f17cc13ed7ae96e17288f">aimath_q31_default_softsign</a></div><div class="ttdeci">void aimath_q31_default_softsign(const aitensor_t *x, aitensor_t *result)</div><div class="ttdoc">Calculates the softsign value of each element in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_ace86d3315e02380430b5ccb30c1654cd"><div class="ttname"><a href="aimath__q31__default_8h.html#ace86d3315e02380430b5ccb30c1654cd">aimath_q31_default_copy_tensor</a></div><div class="ttdeci">void aimath_q31_default_copy_tensor(const aitensor_t *from, aitensor_t *to)</div><div class="ttdoc">Performs an element wise copy of Q31  tensors.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_acfffcef30d301ff065e45649e49f01f9"><div class="ttname"><a href="aimath__q31__default_8h.html#acfffcef30d301ff065e45649e49f01f9">aimath_q31_default_init_glorot_uniform</a></div><div class="ttdeci">void aimath_q31_default_init_glorot_uniform(aitensor_t *tensor)</div><div class="ttdoc">Fills a Q31  tensor with random numbers uniformly within given range, according to Glorot et al.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_ad24f7f3d3b8085e7b306dcfd25eedee5"><div class="ttname"><a href="aimath__q31__default_8h.html#ad24f7f3d3b8085e7b306dcfd25eedee5">aimath_q31_default_sqrt</a></div><div class="ttdeci">int64_t aimath_q31_default_sqrt(int64_t x)</div><div class="ttdoc">Calculates square root of an int64 value.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_ad2f48e32e7e525050c4df4602a5d5ba4"><div class="ttname"><a href="aimath__q31__default_8h.html#ad2f48e32e7e525050c4df4602a5d5ba4">aimath_q31_default_d_tanh</a></div><div class="ttdeci">void aimath_q31_default_d_tanh(const aitensor_t *tanh_x, aitensor_t *result)</div><div class="ttdoc">Calculates the tanh derivative of each element in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_ade419ce3010e7eb1309e01a2d9f6d53c"><div class="ttname"><a href="aimath__q31__default_8h.html#ade419ce3010e7eb1309e01a2d9f6d53c">aimath_q31_default_d_softsign</a></div><div class="ttdeci">void aimath_q31_default_d_softsign(const aitensor_t *x, aitensor_t *result)</div><div class="ttdoc">Calculates the softsign activation derivative of each element in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_ae308be51fead200a1bd035e22dc2b9ba"><div class="ttname"><a href="aimath__q31__default_8h.html#ae308be51fead200a1bd035e22dc2b9ba">aimath_q31_default_relu</a></div><div class="ttdeci">void aimath_q31_default_relu(const aitensor_t *x, aitensor_t *result)</div><div class="ttdoc">Calculates the rectifier (ReLU) value of each element in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_ae56af0b1607688bbec4d1a0954e33ece"><div class="ttname"><a href="aimath__q31__default_8h.html#ae56af0b1607688bbec4d1a0954e33ece">aimath_q31_default_elu</a></div><div class="ttdeci">void aimath_q31_default_elu(const aitensor_t *x, const void *alpha, aitensor_t *result)</div><div class="ttdoc">Calculates the exponential rectifier (ELU) value of each element in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_aeca69423ea281e6b616d1ef4784a21cf"><div class="ttname"><a href="aimath__q31__default_8h.html#aeca69423ea281e6b616d1ef4784a21cf">aimath_q31_default_d_relu</a></div><div class="ttdeci">void aimath_q31_default_d_relu(const aitensor_t *x, aitensor_t *result)</div><div class="ttdoc">Calculates the rectifier (ReLU) derivative of each element in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_aeceeacc1c2046dfa41991a39712ab030"><div class="ttname"><a href="aimath__q31__default_8h.html#aeceeacc1c2046dfa41991a39712ab030">aimath_q31_default_tanh</a></div><div class="ttdeci">void aimath_q31_default_tanh(const aitensor_t *x, aitensor_t *result)</div><div class="ttdoc">Calculates the tanh of each element in a Q31  tensor.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_aefab1f6288cfad6d4d65b095d6c2283d"><div class="ttname"><a href="aimath__q31__default_8h.html#aefab1f6288cfad6d4d65b095d6c2283d">aimath_q31_default_tensor_init_uniform</a></div><div class="ttdeci">void aimath_q31_default_tensor_init_uniform(aitensor_t *tensor, float from, float to)</div><div class="ttdoc">Fills a Q31  tensor with random numbers created from a uniform distribution within given range.</div></div>
<div class="ttc" id="aaimath__q31__default_8h_html_afbbdfc6c4787782533e79df8aab5c3ba"><div class="ttname"><a href="aimath__q31__default_8h.html#afbbdfc6c4787782533e79df8aab5c3ba">aimath_q31_default_tensor_sqrt</a></div><div class="ttdeci">void aimath_q31_default_tensor_sqrt(const aitensor_t *x, aitensor_t *result)</div><div class="ttdoc">Calculates the element wise square root of a Q31  tensor.</div></div>
<div class="ttc" id="astructaitensor_html"><div class="ttname"><a href="structaitensor.html">aitensor</a></div><div class="ttdoc">A tensor in AIfES.</div><div class="ttdef"><b>Definition:</b> aifes_math.h:89</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1e5d3661ed79af157d57e64a38265d09.html">basic</a></li><li class="navelem"><a class="el" href="dir_6f3c54947e40ccd50db54894d07fbfc0.html">default</a></li><li class="navelem"><a class="el" href="dir_973bc2385ef3e651973e652a47ef087c.html">aimath</a></li><li class="navelem"><a class="el" href="aimath__q31__default_8h.html">aimath_q31_default.h</a></li>
    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
